﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

namespace SuperRyoninRPG.Main
{
	/// <summary>
	/// 2 次元 (2D) の円を表示
	/// します。
	/// </summary>
	public struct Circle
	{
		/// <summary>
		/// 円の中心位置。
		/// </summary>
		public Vector2 Center;

		/// <summary>
		/// 円の半径。
		/// </summary>
		public float Radius;

		/// <summary>
		/// 新しい円を構築します。
		/// </summary>
		public Circle(Vector2 position, float radius)
		{
			Center = position;
			Radius = radius;
		}

		/// <summary>
		/// 円が矩形を交差するかどうかを決定します。
		/// </summary>
		/// <returns>円が矩形に重なる場合、true。それ以外の場合、false。</returns>
		public bool Intersects(Rectangle rectangle)
		{
			Vector2 v = new Vector2(MathHelper.Clamp(Center.X, rectangle.Left, rectangle.Right),
									MathHelper.Clamp(Center.Y, rectangle.Top, rectangle.Bottom));

			Vector2 direction = Center - v;
			float distanceSquared = direction.LengthSquared();

			return ((distanceSquared > 0) && (distanceSquared < Radius * Radius));
		}
	}

}
